লারাভেল (Laravel) ফ্রেমওয়ার্কে পেজিনেশন (Pagination) ব্যবহার করে আপনি ডাটাবেস থেকে বড় আকারের ডেটা স্ন্যাপশট বা ছোট ছোট অংশে ভাগ করে প্রদর্শন করতে পারেন। এটি বিশেষত যখন আপনার অ্যাপ্লিকেশন বড় ডেটাবেস নিয়ে কাজ করে, তখন খুবই কার্যকরী হয়। পেজিনেশন ব্যবহার করে ডেটা দ্রুত এবং কার্যকরভাবে লোড করা যায় এবং ব্যবহারকারীদের জন্য একটি সুনির্দিষ্ট পেজিনেটেড ইন্টারফেস তৈরি করা সম্ভব হয়।
পেজিনেশন (Pagination) হল ডেটার একটি অংশবিশেষ একে একে প্রদর্শন করার পদ্ধতি, যাতে পুরো ডেটাবেস লোড করার পরিবর্তে শুধুমাত্র নির্বাচিত অংশটি প্রদর্শন করা হয়। লারাভেল এর জন্য একটি শক্তিশালী পেজিনেশন সিস্টেম সরবরাহ করে, যা খুব সহজেই কাজ করে এবং বিভিন্ন অপশন দিয়ে কাস্টমাইজ করা যায়।
লারাভেল পেজিনেশন ব্যবহার করার জন্য আপনি সাধারণত ইলোকোয়েন্ট মডেল (Eloquent Model) অথবা কুয়েরি বিল্ডার (Query Builder) ব্যবহার করে ডেটার পেজিনেটেড ফলাফল রিটার্ন করেন। লারাভেল পেজিনেশন স্বয়ংক্রিয়ভাবে HTML লিংক তৈরি করে, যার মাধ্যমে ব্যবহারকারী বিভিন্ন পেজে নেভিগেট করতে পারেন।
এটি একটি সাধারণ উদাহরণ যেখানে একটি Post
মডেল থেকে পেজিনেটেড ডেটা রিটার্ন করা হচ্ছে:
$posts = Post::paginate(10);
এখানে 10
হল প্রতিটি পেজে প্রদর্শিত আইটেমের সংখ্যা। এই কমান্ডটি একটি পেজিনেটেড রেজাল্ট সেট রিটার্ন করবে, যেখানে আপনি প্রতি পেজে ১০টি পোষ্ট দেখতে পারবেন।
এখন আপনি ভিউতে পেজিনেটেড ডেটা প্রদর্শন করতে পারেন:
@foreach ($posts as $post)
<p>{{ $post->title }}</p>
@endforeach
<!-- পেজিনেশন লিংক -->
{{ $posts->links() }}
এখানে, {{ $posts->links() }}
লারাভেল পেজিনেটেড ডেটার জন্য স্বয়ংক্রিয়ভাবে পেজিনেশন লিংক তৈরি করবে।
কুয়েরি বিল্ডার ব্যবহার করেও পেজিনেশন করা যায়। উদাহরণস্বরূপ, যদি আপনি ডাটাবেসের কোনো টেবিল থেকে পেজিনেটেড ডেটা চান:
$users = DB::table('users')->paginate(15);
এটি users
টেবিল থেকে প্রতি পেজে ১৫টি ব্যবহারকারী রিটার্ন করবে।
লারাভেল পেজিনেশন বেশ কাস্টমাইজেবল, আপনি বিভিন্নভাবে এর আচরণ পরিবর্তন করতে পারেন। যেমন, আপনি পেজিং পদ্ধতির জন্য কাস্টম লিঙ্ক, বিভিন্ন স্টাইল, অথবা অন্যান্য অপশন ব্যবহার করতে পারেন।
আপনি চাইলে ডাইনামিক্যালি পেজ সাইজ পরিবর্তন করতে পারেন। উদাহরণ:
$posts = Post::paginate(request('perPage', 10));
এখানে, perPage
হল ইউআরএল প্যারামিটার যা পেজ সাইজ নিয়ন্ত্রণ করবে। যদি এটি প্রদান না করা হয়, তবে ডিফল্টভাবে ১০টি আইটেম প্রদর্শিত হবে।
লিংকগুলি কাস্টমাইজ করতে, links()
ফাংশনে প্যারামিটার হিসেবে ক্লাস অ্যাট্রিবিউট দিতে পারেন:
{{ $posts->links('pagination::bootstrap-4') }}
এটি পেজিনেশন লিংকগুলিকে bootstrap-4
স্টাইলের সাথে প্রদর্শন করবে।
লারাভেল পেজিনেশন শুধু ডেটার পেজই প্রদর্শন করে না, বরং এতে কিছু অতিরিক্ত তথ্যও থাকে যা ব্যবহার করা যেতে পারে। যেমন, আপনি মোট আইটেম সংখ্যা, মোট পেজ সংখ্যা, বর্তমান পেজ ইত্যাদি দেখতে পারেন।
<p>মোট আইটেম: {{ $posts->total() }}</p>
<p>বর্তমান পেজ: {{ $posts->currentPage() }}</p>
<p>মোট পেজ: {{ $posts->lastPage() }}</p>
যখন আপনি সার্চ ফিচার যুক্ত করতে চান, তখন আপনি পেজিনেশন এবং সার্চ একত্রে ব্যবহার করতে পারেন। উদাহরণ:
$posts = Post::where('title', 'like', '%' . $request->search . '%')->paginate(10);
এখানে, title
কলামের মধ্যে সার্চ করা হবে এবং ১০টি পেজে ফলাফল ভাগ করা হবে।
লারাভেল পেজিনেশন (Laravel Pagination) ব্যবহার করে আপনি সহজেই আপনার অ্যাপ্লিকেশনে বড় ডেটা সিস্টেমের জন্য পেজিং ব্যবস্থা তৈরি করতে পারেন। এটি শুধুমাত্র ব্যবহারকারীদের জন্য ডেটা অ্যাক্সেসকে আরও সহজ এবং কার্যকরী করে তোলে না, বরং অ্যাপ্লিকেশনের পারফরম্যান্সও উন্নত করে।
Read more